<template>
  <div class="home_container">
    <headCpts />
    <mainCptsVue />
    <footsCpts />
  </div>
</template>

<script setup>
import headCpts from "../components/headCpts.vue";
import mainCptsVue from "../components/mainCpts2.vue";
import footsCpts from "../components/footsCpts.vue";
import { createSocket } from "../utils/socket";
import { useCounterStore } from "../store";
import { $TipMessage } from "../http";
import { getDataAr } from "../utils";
const { ipcRenderer } = require("electron");
const store = useCounterStore();
const doJoinRoom = () => {
  console.log("进入房间");
  if (store.isLine && store.loginSD) {
    store.socketOB.socketSendMessage({
      c: "room",
      m: "joinroom",
      data: {
        roomid: 147300,
      },
    });
  } else {
    setTimeout(() => {
      doJoinRoom();
    }, 1500);
  }
};
// 聊天的实例
store.socketChatOB = createSocket({
  success: ({ c, m, data }) => {
    if (c === "chat" && m === "ready") {
      store.joinPrivateSD = data;
      // console.log("store.joinPrivateSD----------", store.joinPrivateSD);
    }
    if (c === "chat" && m === "sendprivate") {
      console.log("发送消息了", data);
      store.takePrivateSD.push(data);
      // console.log("store.takePrivateSD------------", store.takePrivateSD);
    }
  },
  fail() {},
  opened() {
    //监听socket连接成功
    // store.isLine = true;
  },
  closed() {},
  lineUrlType: "chat",
});
// 房间的实例
store.socketOB = createSocket({
  success: ({ c, m, data }) => {
    // 登录
    if (c === "room" && m === "login") {
      if (data.errcode === 0) {
        store.loginSD = data;
      } else {
        $TipMessage(data.errmsg, "error");
        localStorage.clear();
        // store.isLine = false;
        ipcRenderer.send("login-out");
        router.push("/login");
      }
    }
    // 禁言
    if (c === "room" && m === "jinyan") {
      if (data?.errcode === 0 || data?.data?.errcode === 0) {
        store.isForbiTalk = true;
      }
    }
    // 取消管理
    if (c === "room" && m === "canceladmin") {
      if (data?.errcode === 0 || data?.data?.errcode === 0) {
        store.isForbiTalk = true;
      }
    }
    // 设为管理
    if (c === "room" && m === "setadmin") {
      if (data?.errcode === 0 || data?.data?.errcode === 0) {
        store.isForbiTalk = true;
      }
    }
    // 上麦申请
    if (c === "room" && m === "applylivecontactlist") {
      if (data.errcode === 0) {
        store.mikeAskInf = data.list;
      }
    }
    // 是否同意连麦
    if (c === "room" && m === "reviewcontact") {
      console.log("reviewcontact------------------", data);
      if (data.errcode === 0) {
        store.mikeAskInf = data.list;
      } else {
        if (data.status === 1) {
          store.isAgent = true;
        } else {
          store.isRejuect = true;
        }
      }
    }
    // pk

    //创建团队
    if (c === "room" && m === "videopksendnotice") {
      console.log("创建队伍------------------", data);
      if (data.errcode === 0) {
        store.teamId = data.teamid;
        store.isIntoTeam = true;
        if (data.joinstatus === 1) {
          console.log("创建团队suceess");
          store.inviteSucess = true;
        }
      }
    }
    //踢出自己或者别人
    if (c === "room" && m === "videopkquitteamup") {
      console.log("踢出自己或者别人------------------", data);
      if (data.errcode === 0) {
        store.isTickSuccess = true;
      }
    }

    //邀请方发送邀请 videopkteamup[1：在线邀请，抢位 2：邀请他人]
    if (c === "room" && m === "videopkteamup") {
      console.log("发送邀请的回调提示------------------", data);
      if (data.errcode === 0) {
        store.sendSucess = true;
        store.sendInviteSucess = true;
        console.log('store.sendInviteSucess=========>',store.sendInviteSucess);
        $TipMessage(`${data.message}`);
      } else {
        $TipMessage(`${data.errmsg}`);
        store.sendSucess = false;
        store.sendInviteSucess = false;
      }
    }
    //获取组队的信息
    if (c === "room" && m === "videoformatteamdata") {
      console.log("获取组队的信息------------------", data);
      if (data.errcode === 0) {
        store.isTakeTeamInfo = true;
        store.createTeamInfo = JSON.stringify(data?.teaminfo)!=='{}' ? data.teaminfo:null;
        console.log('  获取组队的信息------------------store.createTeamInfo =',  store.createTeamInfo );
        //teams
      }
    }
    // 获取被邀请人的列表
    if (c === "room" && m === "videoonlinerooms") {
      // console.log("获取组队列表------------------", data);
      if (data.errcode === 0) {
        store.inviteList = data.onlinerooms;
      }
    }
    //被邀请方监听邀请方发送邀请的事件
    if (c === "room" && m === "videopkinvite") {
      console.log(
        "-----------B监听的A发送的事件----------",
        data.errcode,
        data
      );
      if (data.errcode === 0) {
        store.isWatchOthrInvite = true;
        store.inviteMsg = data.data;
      }
    }

    // 合并在一起了，但是回调的数据不一样。
    // A监听B点了同意or拒绝的回调 与  B操作同意or拒绝的回调
    if (c === "room" && m === "videopkchecknotice") {
      console.log("A监听B点了同意or拒绝1------------------", data);
      if (data.errcode === 0) {
        // 1.监听的事件推
        store.OtherSideAgree = true;
        store.OtherSideInfo = data;
        console.log("store.OtherSideInfo ", store.OtherSideInfo);
        //2. 被邀请方操作的回调后场景值
        // store.isOptionSucess = true;
        // store.isjoin = data.isjoin; //1同意 2拒绝
        // store.isAgreePK = data.joinstatus;
      }
    }

    // 管理员列表
    if (c === "room" && m === "adminlist") {
      if (data.errcode === 0) {
        store.setList["adminlist"] = data?.list;
      }
    }
    // 提出列表
    if (c === "room" && m === "tickoutlist") {
      if (data.errcode === 0) {
        store.setList["tickoutlist"] = data.list;
      }
    }
    // 禁言列表
    if (c === "room" && m === "jinyanlist") {
      if (data.errcode === 0) {
        store.setList["jinyanlist"] = data.list;
      }
    }
    // 拉黑列表
    if (c === "room" && m === "laheilist") {
      if (data.errcode === 0) {
        store.setList["laheilist"] = data.list;
      }
    }
    // 连麦管理
    if (c === "room" && m === "getlivecontactlist") {
      if (data.errcode === 0) {
        store.mikeManageInf = data.list;
      }
    }
    // 待确认。。。
    if (c === "room" && m === "livecheckcontact") {
      // 根据类型判断：同意拒绝
      // console.log("根据类型判断：同意拒绝---------------", data);
      if (data.status === 1) {
        // console.log("同意--------------", data.message);
      } else if (data.status === 2) {
        // console.log("拒绝--------------", data.errmsg);
      }
    }
    // 取消禁言
    if (c === "room" && m === "canceljinyan") {
      // console.log("取消禁言完成------------", data);
      if (data?.errcode === 0 || data?.data?.errcode === 0) {
        store.isForbiTalk = true;
      }
    }
    // 进入房间
    if (c === "room" && m === "joinroom") {
      console.log("进入房间完成------------", data);
      store.joinRoom = true;
    }
    // 主播邀请用户连麦
    if (c === "room" && m === "invitecontact") {
      $TipMessage(data?.message || data?.errmsg, "success");
    }
    // 待确认我这边调用
    if (c === "room" && m === "joincontact") {
      // store.
      $TipMessage(data?.message || data?.errmsg, "success");
      console.log("麦------------", data);
      if (data.errmsg.includes("申请上麦审核中")) {
        console.log("进来-----------", data.errmsg.includes("申请上麦审核中"));
        store.goAsk = true;
      }
    }

    if (c === "room" && m === "welcome") {
      // console.log("welcome------------", data);
      store.welcomeSD = data?.user;
    }
    // 发送信息
    if (c === "room" && m === "sendmessage") {
      // console.log("sendmessage--------------:", data?.data);
      store.sendInfo = data?.data;
      if (data?.data?.type === 1) {
        store.rightMsgList.push(data?.data);
        // console.log("右边发送消息：", store.rightMsgList);
      } else if (data?.data?.type === 5) {
        store.minMsgList.push(data?.data);
        // console.log("中间发送消息：", store.minMsgList);
      } else {
        // console.log("111");
      }
    }
    // 线用户列表
    if (c === "room" && m === "onlineuser") {
      store.AllonlineUsrs = data;
      store.leftOnLineUsr = data?.onlineusers?.filter(
        (v) => v.id !== store.loginer.user.id
      );
      store.rightTrueUsr = data?.realuserlist?.filter(
        (v) => v.id !== store.loginer.user.id
      );
      store.adminUsrs = data?.adminuserlists;
      store.nobleUsrs = data?.guizuuserlis;
    }
    // if (c === "chat" && m === "sendprivate") {
    //   console.log("进入房间完成------------", data);
    //   store.joinRoom = true;
    // }
  },
  fail() {},
  opened() {
    //监听socket连接成功
    store.isLine = true;
  },
  closed() {
    //关掉socket
    store.isLine = false;
    store.loginOB = null;
    store.joinRoom = null;
    clearInterval(this.tickTimer);
    this.tickTimer = null;

    console.log("已掉线");
    //尝试重连

    try {
      reLinkSocket();
      doJoinRoom();
    } catch (error) {
      console.log("重连失败");
    }
  },
});
const reLinkSocket = () => {
  store.socketOB = createSocket({
    success: ({ c, m, data }) => {
      if (c === "room" && m === "login") {
        console.log("登录完成--------------", data);
        store.loginSD = data;
      }

      if (c === "room" && m === "joinroom") {
        console.log("进入房间完成------------", data);
        store.joinRoom = true;
      }
      if (c === "chat" && m === "sendprivate") {
        console.log("发送聊天信息------------", data);
      }
      if (c === "room" && m === "welcome") {
        console.log("welcome------------", data);
        store.welcomeSD = data?.user;

        console.log("welcome--------- store.welcomeSD ---", data);
      }

      if (c === "room" && m === "sendmessage") {
        console.log("sendmessage--------------:", data?.data);
        store.sendInfo = data?.data;
        if (data?.data?.type === 1) {
          store.rightMsgList.push(data?.data);
          console.log("右边发送消息：", store.rightMsgList);
        } else if (data?.data?.type === 5) {
          store.minMsgList.push(data?.data);
          console.log("中间发送消息：", store.minMsgList);
        } else {
          console.log("111");
        }
      }

      if (c === "room" && m === "onlineuser") {
        store.AllonlineUsrs = data;
        store.leftOnLineUsr = [...data?.onlineusers, ...data?.realuserlist];
        store.rightTrueUsr = data?.realuserlist;
        store.adminUsrs = data?.adminuserlists;
        store.nobleUsrs = data?.guizuuserlis;
        console.log(
          " store.leftOnLineUsr ********--------------:",
          store.leftOnLineUsr
        );
        console.log(" store.adminUsrs", store.adminUsrs);
      }

      // if (c === "chat" && m === "sendprivate") {
      //   console.log("进入房间完成------------", data);
      //   store.joinRoom = true;
      // }
    },
    fail() {
      console.log("11111111111111111111fail");
    },
    opened() {
      //监听socket连接成功
      store.isLine = true;
    },
    closed() {
      console.log("111111111111111111111111 closed websocket");
      //关掉socket
      store.isLine = false;
      store.loginOB = null;
      store.joinRoom = null;
      clearInterval(this.tickTimer);
      this.tickTimer = null;
    },
    //  lineUrlType:'chat'
  });
};
</script>

<style scoped>
.home_container {
  min-width: 1600px;
  min-height: 100vh;
}
</style>
